libobs_wrapper\display\window_manager/
misc.rs

1use crate::{display::ObsDisplayRef, run_with_obs, utils::ObsError};
2
3#[cfg_attr(not(feature = "blocking"), async_trait::async_trait)]
4pub trait MiscDisplayTrait {
5    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
6    async fn update_color_space(&self) -> Result<(), ObsError>;
7
8    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
9    async fn is_enabled(&self) -> Result<bool, ObsError>;
10
11    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
12    async fn set_enabled(&self, enabled: bool) -> Result<(), ObsError>;
13
14    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
15    async fn set_background_color(&self, r: u8, g: u8, b: u8) -> Result<(), ObsError>;
16}
17
18#[cfg_attr(not(feature = "blocking"), async_trait::async_trait)]
19impl MiscDisplayTrait for ObsDisplayRef {
20    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
21    async fn update_color_space(&self) -> Result<(), ObsError> {
22        let display_ptr = self.display.clone();
23        run_with_obs!(self.runtime, (display_ptr), move || unsafe {
24            libobs::obs_display_update_color_space(display_ptr)
25        }).await
26    }
27
28    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
29    async fn is_enabled(&self) -> Result<bool, ObsError> {
30        let display_ptr = self.display.clone();
31        run_with_obs!(self.runtime, (display_ptr), move || unsafe {
32            libobs::obs_display_enabled(display_ptr)
33        }).await
34    }
35
36    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
37    async fn set_enabled(&self, enabled: bool) -> Result<(), ObsError> {
38        let display_ptr = self.display.clone();
39
40        run_with_obs!(self.runtime, (display_ptr), move || unsafe {
41            libobs::obs_display_set_enabled(display_ptr, enabled)
42        }).await
43    }
44
45    #[cfg_attr(feature = "blocking", remove_async_await::remove_async_await)]
46    async fn set_background_color(&self, r: u8, g: u8, b: u8) -> Result<(), ObsError> {
47        let color: u32 = ((r as u32) << 16) | ((g as u32) << 8) | (b as u32);
48        let display_ptr = self.display.clone();
49
50        run_with_obs!(self.runtime, (display_ptr), move || unsafe {
51            libobs::obs_display_set_background_color(display_ptr, color)
52        }).await
53    }
54}